using System;
using System.Collections.Generic;
namespace mesoBoard.Data.Repositories
{
    public interface IUserRepository
    {
        bool ActivateUser(string Username, string ActivationCode);
        System.Collections.Generic.IEnumerable<mesoBoard.Data.User> BirthdayUsers();
        void CreateUser(mesoBoard.Data.User TheUser);
        void DeleteUser(int UserID);
        bool EmailInUse(string Email);
        System.Collections.Generic.IEnumerable<mesoBoard.Data.User> GetAllUsers();
        User GetUser(int UserID);
        User GetUser(string userName);
        User GetUserByEmail(string Email);
        UserProfile GetUserProfile(int UserID);
        string[] GetUserRoles(string UserNameOrID);
        User NewestUser();
        User OBSGetUser(string UserNameOrIDOrEmail);
 
        void SyncAllUsers();
        void SyncUser(int UserID);
        int TotalUsers();
        void UpdateLastLogin(int UserID, string LastLoginIP);
        void UpdateLastLogout(int UserID);
        void UpdateProfile(mesoBoard.Data.UserProfile TheProfile);
        void UpdateUser(mesoBoard.Data.User TheUser);
        bool UserExists(string UserNameOrID);
        IEnumerable<User> UsersInRole(int RoleID);
        bool ValidateUser(string Username, string Password);
        void CreatePasswordResetRequest(PasswordResetRequest ThePasswordResetRequest);
        void DeletePasswordResetRequest(int UserID);
        PasswordResetRequest GetPasswordResetRequest(int UserID);
    }
}
